from lxml import etree

# xpath 解析
# (1) 本地文件                                          etree.parse
# (2) 服务器响应的数据   response.read().decode()         etree.HTML
tree = etree.parse('xpath 的基本使用.html')

# 路径查询 // 子孙节点  / 子节点
li_list = tree.xpath('//body//li')
print(li_list)

# 查询所有有id属性的li标签
# test() 获取标签中的内容
id_li_list = tree.xpath('//ul/li[@id]/text()')
print(id_li_list)

# 找到 id 为l1的li标签
id_l1_li_list = tree.xpath('//ul/li[@id="l1"]/text()')
print(id_l1_li_list)

# 查找到 id 为 l1 的 li 标签的 class 的属性值
li = tree.xpath('//ul/li[@id="l1"]/@class')
print(li)

# 查询 id 中包含 l 的 li 标签
contains_list = tree.xpath('//ul/li[contains(@id,"l")]/text()')
print(contains_list)

# 查询 id 的值以 l 开头的 li 标签
li_list = tree.xpath('//ul/li[starts-with(@id, "l")]/text()')
print(li_list)

# 逻辑运算 逻辑与
print(tree.xpath('//ul/li[@id="l1" and @class="c1"]/text()'))
# 逻辑或
print(tree.xpath('//ul/li[@id="l1" or @id="l2"]/text()'))

print(tree)


